<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss'><id>tag:blogger.com,1999:blog-5063286</id><updated>2009-11-07T22:43:59.324-06:00</updated><title type='text'>Quantum Monte Carlo</title><subtitle type='html'>Thoughts, information, and links about Quantum Monte Carlo methods (and classical MC methods, too)</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://quantum_mc.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5063286/posts/default'/><link rel='alternate' type='text/html' href='http://quantum_mc.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/5063286/posts/default?start-index=26&amp;max-results=25'/><author><name>Mark</name><uri>http://www.blogger.com/profile/03956296363343527391</uri><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>100</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5063286.post-268864206641432128</id><published>2009-08-27T00:19:00.000-05:00</published><updated>2009-08-27T00:20:09.770-05:00</updated><title type='text'>Levy constrained search in VMC?</title><content type='html'>The Levy constrained search formalism is a useful way to reason about density functional theory.  It finds the minimum energy using two nested searches.  The inner search seeks the minimum energy wavefunction for a particular density. The outer search seeks the density with the minimum energy.&lt;br /&gt;&lt;br /&gt;This could be directly implemented using VMC.  The main ingredient is energy minimization subject to a density constraint.  Has anyone done this?&lt;br /&gt;&lt;br /&gt;It wouldn't be very efficient compared to optimizing the VMC energy directly, but it would make an interesting connection between the methods.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5063286-268864206641432128?l=quantum_mc.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://quantum_mc.blogspot.com/feeds/268864206641432128/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5063286&amp;postID=268864206641432128' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5063286/posts/default/268864206641432128'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5063286/posts/default/268864206641432128'/><link rel='alternate' type='text/html' href='http://quantum_mc.blogspot.com/2009/08/levy-constrained-search-in-vmc.html' title='Levy constrained search in VMC?'/><author><name>Mark</name><uri>http://www.blogger.com/profile/03956296363343527391</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17905813891182211586'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5063286.post-1877051334025722645</id><published>2008-12-14T14:49:00.002-06:00</published><updated>2008-12-16T00:10:27.208-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Why scientific computations fail</title><content type='html'>(I was busy this fall with another project.  Now it's time to return to scientific programming)&lt;br /&gt;&lt;p&gt;&lt;br /&gt;The &lt;a href="http://quantum_mc.blogspot.com/2008/07/assessing-correctness-of-scientific.html"&gt;previous post&lt;/a&gt; covered several levels of tests for assessing the correctness of scientific computation.  Now let us look at reasons why the results might not match what is expected.&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;Programming errors&lt;br /&gt;&lt;li&gt;Mistakes in derivation and transcription of equations&lt;br /&gt;&lt;li&gt;Violations of assumptions or conventions&lt;br /&gt;&lt;li&gt;Errors from floating point&lt;br /&gt;&lt;li&gt;Errors and undesirable behavior from the algorithm (often problem-dependent)&lt;br /&gt;  &lt;ul&gt;&lt;br /&gt;   &lt;li&gt; Algorithms that have been well-studied by numerical analysts &lt;br /&gt;   &lt;li&gt; Those that have not&lt;br /&gt;  &lt;/ul&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;h3&gt;Programming errors&lt;/h3&gt;&lt;br /&gt;The usual sorts of problems in programs (array indices, memory problems, etc).   This category of problems can be tested with unit tests and can make use of tools and practices from mainstream software engineering.&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;h3&gt;Mistakes in derivation and transcription of equations&lt;/h3&gt;&lt;br /&gt;This is similar to the implementation not matching the specification in traditional software engineering.  With scientific computation, though, the "specification" could be more precise in principle (equations and algorithms), and computer algebra systems could aid with performing and verifying steps in the derivation.&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;h3&gt;Violations of assumptions or conventions&lt;/h3&gt;&lt;br /&gt;Usually happens during derivation of the equations.  A stronger connection between the derivation and the final code might help this.&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;h3&gt;Errors and instabilities from floating point&lt;/h3&gt;&lt;br /&gt;Accumulated round-off, loss of precision from subtracting nearly equal numbers, and other problems. For more subtleties than you every wanted to know about, visit &lt;a href="http://www.cs.berkeley.edu/~wkahan/"&gt;W. Kahan's site&lt;/a&gt;.&lt;br /&gt;One of the most annoying parts about floating point is lack of good model for understanding (and analyzing) floating point errors.  I will return to this issue in a future post.&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;h3&gt;Errors and instabilities from the algorithm.&lt;/h3&gt;&lt;br /&gt;This category might be better divided into two subcategories - algorithms that have been well-studied by numerical analysts (like matrix operations, certain ODE's and PDE's, optimization), and those that have not.   Many algorithms have been well-studied and have nice packages available to use as black-boxes.  However, most scientific programs are a composition of well-known algorithms along with some problem-dependent features as well.&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Often times the behavior of the algorithm depends on the details of the physical system (ie, is it a metal or insulator)? &lt;br /&gt;&lt;br/&gt;&lt;br /&gt;This category also includes science-based and numerical approximations.&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Now, how do we go from test case failure to deciding which of these categories the problem falls into (and then, of course, to locating the precise problem)?&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Unit testing will help with the first category.  But not so much with the rest. Unit testing is helpful when you want to make sure things haven't changed. The hard part is getting it right the first time.&lt;br /&gt;&lt;li&gt;The different levels of tests in the previous post should give some insight into which category the problem might occur.&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;First I want to look at various models of floating point error and see if we can gain some understanding of the intrinsic uncertainty in a calculation.  This seems to be a necessary prerequisite for answering the question of 'how close is close enough?', in order to decide whether a test has actually failed or not.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5063286-1877051334025722645?l=quantum_mc.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://quantum_mc.blogspot.com/feeds/1877051334025722645/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5063286&amp;postID=1877051334025722645' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5063286/posts/default/1877051334025722645'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5063286/posts/default/1877051334025722645'/><link rel='alternate' type='text/html' href='http://quantum_mc.blogspot.com/2008/12/why-scientific-computations-fail.html' title='Why scientific computations fail'/><author><name>Mark</name><uri>http://www.blogger.com/profile/03956296363343527391</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17905813891182211586'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5063286.post-8752188020074522512</id><published>2008-07-13T21:54:00.000-05:00</published><updated>2008-07-16T23:27:38.177-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Assessing the correctness of scientific computation</title><content type='html'>In the &lt;a href="http://quantum_mc.blogspot.com/2008/07/engineering-scientific-software.html"&gt;previous post&lt;/a&gt; I promised some thoughts on assessing the correctness of scientific computation.&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Computational science programs are typically assessed with a series of test cases, ranging from order-of-magnitude estimates ("those numbers don't look right") to comparing with experimental data.  I've attempted to divide these test cases into categories, where each category shares similar expectations as to what 'close enough' means and has similar implications into potential causes for discrepancies.&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;Order of magnitude estimates from general principles, back of the envelope calculations, or experience with similar problems.&lt;br /&gt;&lt;li&gt;Analytically solvable cases.&lt;br /&gt;&lt;li&gt;Small cases that are accurately solvable&lt;br&gt;For small systems, or simple cases, there are often multiple solution methods, and some of them are very accurate (or exact).  The methods can be compared for these small systems.   An important feature of this category is any approximations  can be controlled and the effects made arbitrarily small.&lt;br /&gt;&lt;li&gt;Results from the same (or similar) algorithm&lt;br&gt;Comparing the same system with the same algorithm should yield close results, but now there is additional uncertainty in the exact implementation, and the sensitivity to input precision (particularly when comparing results from a journal article)&lt;br /&gt;&lt;li&gt;Results from a different algorithm&lt;br&gt;This looks similar to the second category (comparing with exact or more precise algorithms), but this is the case where there a multiple methods (with different approximations) for handling larger systems.  There are likely to be more approximations (and probably uncontrolled approximations) involved.&lt;br&gt;&lt;br /&gt;(In electronic structure there is Hartree-Fock(HF), several post-HF methods, Density Functional Theory, and Quantum Monte Carlo.  And possibly a few others.) Now one has to deal with the all the above possibilities for two programs, rather than just one.&lt;br /&gt;&lt;li&gt;Experimental results&lt;br&gt;In some ways this is quite similar to the the previous category, except determining "sufficiently" close requires some understanding of the experimental uncertainties and corrections in addition to possible program errors.&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;The testing process for each case involves running the test case, deciding whether the program result is 'close enough'.  If it is, proceed to the next test case.  If it is not, work to discover the cause of the discrepancy.  Next post I'll look at a list of possible causes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5063286-8752188020074522512?l=quantum_mc.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://quantum_mc.blogspot.com/feeds/8752188020074522512/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5063286&amp;postID=8752188020074522512' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5063286/posts/default/8752188020074522512'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5063286/posts/default/8752188020074522512'/><link rel='alternate' type='text/html' href='http://quantum_mc.blogspot.com/2008/07/assessing-correctness-of-scientific.html' title='Assessing the correctness of scientific computation'/><author><name>Mark</name><uri>http://www.blogger.com/profile/03956296363343527391</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17905813891182211586'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5063286.post-6670703497622424735</id><published>2008-07-12T01:20:00.002-05:00</published><updated>2008-07-12T01:43:23.064-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Engineering scientific software</title><content type='html'>Some pointers from Greg Wilson on engineering scientific software.&lt;br /&gt;&lt;p&gt;&lt;br /&gt;The &lt;a href="http://pyre.third-bit.com/blog/archives/1557.html"&gt;first pointer&lt;/a&gt; is to the &lt;a href="http://www.cse.msstate.edu/~SECSE08/index.htm"&gt;"First International Workshop on Software Engineering for Computational Science and Engineering"&lt;/a&gt;.&lt;br /&gt;&lt;p&gt;&lt;br /&gt;A couple of Wilson's short summaries of papers from this workshop &lt;br /&gt;(from &lt;a href="http://pyre.third-bit.com/blog/archives/1624.html"&gt;recent research reading&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Diane Kelly and Rebecca Sanders: “Assessing the Quality of Scientific Software” (SE-CSE workshop, 2008). A short, useful summary of scientists’ quality assurance practices. As many people have noted, most commercial tools aren’t helpful when (a) cosmetic rearrangement of the code changes the output, and (b) the whole reason you’re writing a program is that you can’t figure out what the answer ought to be.&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;Judith Segal: “Models of Scientific Software Development”. Segal has spent the last few years doing field studies of scientists building software, and based on those has developed a model of their processes that is distinct in several ways from both classical and agile models.&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;What I found interesting:&lt;br/&gt;&lt;br /&gt;Kelly and Sanders suggest that the split between verification and validation is not useful, and propose 'assessment' be used as an umbrella term.  (I will return to the point in a later post)&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;The &lt;a href="http://pyre.third-bit.com/blog/archives/1559.html"&gt;second pointer&lt;/a&gt; is to the presentations at &lt;a href="http://www.tacc.utexas.edu/ta/ta_display.php?ta_id=100484"&gt;TACC Scientific Software Days&lt;/a&gt;. &lt;br /&gt;&lt;p&gt;&lt;br /&gt;One of the presentations there was by Greg Wilson himself on "HPC Considered Harmful". There is one slide on testing floating point code (slide 15).  In particular the bullet point testing against a tolerance is "superstition, not science". (And he's raised &lt;a href="http://www.computer.org/portal/site/cise/index.jsp?pageID=cise_level1_article&amp;TheCat=1001&amp;path=cise/2006/v8n6&amp;file=tech.xml"&gt;this point elsewhere&lt;/a&gt;)&lt;br /&gt;&lt;p&gt;&lt;br /&gt;This statement has bothered me since I first read it, and so the next few posts will explore some of context surrounding this question. The first post will list different methods for assessing the correctness of a program, the next post will categorize possible errors, and finally a post looking at 'close enough'.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5063286-6670703497622424735?l=quantum_mc.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://quantum_mc.blogspot.com/feeds/6670703497622424735/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5063286&amp;postID=6670703497622424735' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5063286/posts/default/6670703497622424735'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5063286/posts/default/6670703497622424735'/><link rel='alternate' type='text/html' href='http://quantum_mc.blogspot.com/2008/07/engineering-scientific-software.html' title='Engineering scientific software'/><author><name>Mark</name><uri>http://www.blogger.com/profile/03956296363343527391</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17905813891182211586'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5063286.post-5934050125912119667</id><published>2008-05-29T22:23:00.000-05:00</published><updated>2008-05-29T22:24:19.773-05:00</updated><title type='text'>Computing an unbiased inverse</title><content type='html'>In a previous entry, &lt;a href="http://quantum_mc.blogspot.com/2007/08/reweighting-is-biased.html"&gt;Reweighting is biased&lt;/a&gt;, I had discussed the problem of a finite-sample size bias in reweighting.  In this entry I will investigate a possible solution.&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;But first, I had asked if this was known in the literature.  A comment by Lee Warren pointed to this article, &lt;a href="http://scitation.aip.org/getabs/servlet/GetabsServlet?prog=normal&amp;id=PLEEE8000073000005056706000001&amp;idtype=cvips&amp;gifs=yes"&gt; Population size bias in descendant-weighted diffusion quantum Monte Carlo simulations&lt;/a&gt;, which discusses this very issue (in a slightly different context, but the root issue is the same).  In that context the problem is even more severe since the straightforward solution (increase N) carries a heavier computational cost.&lt;br /&gt;&lt;p&gt;&lt;br /&gt;One of the crucial issues is finding a good estimator for the inverse (1/D).  The naive estimator (simply do the division) is biased.   So the question is: are there any other ways of performing division that could be used?   Yes, in digital arithmetic there are a couple of algorithms for division using only multiplication and addition - Newton-Raphson and Goldschmidt (see  the Wikipedia entry on &lt;a href="http://en.wikipedia.org/wiki/Division_(digital)"&gt;digital division&lt;/a&gt;)&lt;br /&gt;&lt;p&gt;&lt;br /&gt;In general, to have an unbiased estimator, each sample of the random variable must enter the estimator linearly (alternately, we can say each sample should only be used once and then discarded)&lt;br /&gt;&lt;p&gt;&lt;br /&gt;The Newton-Raphson iteration for the inverse (1/D) is x&lt;sub&gt;i+1&lt;/sub&gt; = x&lt;sub&gt;i&lt;/sub&gt;(2-D x&lt;sub&gt;i&lt;/sub&gt;).   To make this unbiased, in each iteration the value of D needs to be an independent sample, and the values of x&lt;sub&gt;i&lt;/sub&gt; from previous iterations also need to be computed from independent samples.   One can think of the algorithm forming a tree, with each iteration branching to two children (each child is one of the x&lt;sub&gt;i&lt;/sub&gt; computed by the previous iteration), until reaching the leaves representing the initial iteration (x&lt;sub&gt;0&lt;/sub&gt; = T&lt;sub&gt;1&lt;/sub&gt; + T&lt;sub&gt;2&lt;/sub&gt; D)&lt;br /&gt;&lt;p&gt;&lt;br /&gt;I tested this algorithm, and it appears to give unbiased results.   There is a catch, though. The result has a large variance.  Using the average of all the samples with the naive estimator yields a bias that is much smaller than the variance of the unbiased estimator (hence the mean squared error is a more appropriate metric for the combination of variance and bias)&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Open questions/issues:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt; Is there some modification of the algorithm that will produce a smaller MSE than the naive estimator? Or even an MSE that isn't too much larger?&lt;/li&gt;&lt;br /&gt;&lt;li&gt; How many iterations are necessary - how to analyze the convergence of this stochastic Newton-Raphson iteration?&lt;/li&gt;&lt;br /&gt;&lt;li&gt; Try out the Goldschmidt algorithm.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5063286-5934050125912119667?l=quantum_mc.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://quantum_mc.blogspot.com/feeds/5934050125912119667/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5063286&amp;postID=5934050125912119667' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5063286/posts/default/5934050125912119667'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5063286/posts/default/5934050125912119667'/><link rel='alternate' type='text/html' href='http://quantum_mc.blogspot.com/2008/05/computing-unbiased-inverse.html' title='Computing an unbiased inverse'/><author><name>Mark</name><uri>http://www.blogger.com/profile/03956296363343527391</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17905813891182211586'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5063286.post-2774220692253249455</id><published>2008-04-06T00:56:00.000-05:00</published><updated>2008-04-06T00:57:06.725-05:00</updated><title type='text'>Reproducible Research</title><content type='html'>There were a couple of recent posts on &lt;a href="http://pyre.third-bit.com/blog"&gt;Greg Wilsons's blog&lt;/a&gt; about reproducible research.  The &lt;a href="http://pyre.third-bit.com/blog/archives/1444.html"&gt;first&lt;/a&gt; is a pointer to a &lt;a href="http://www-stat.stanford.edu/%7Edonoho/Reports/1995/wavelab.pdf"&gt;paper&lt;/a&gt; about &lt;a href="http://www-stat.stanford.edu/%7Ewavelab/"&gt;WaveLab&lt;/a&gt;. The paper is from 1995, although it appears the philosophy hasn't changed much looking at a more recent (2005) introduction on the website.  The &lt;a href="http://pyre.third-bit.com/blog/archives/1457.html"&gt;second post&lt;/a&gt; contains a reference to the &lt;a href="http://rsf.sourceforge.net/Main_Page"&gt;Madagascar project&lt;/a&gt;.&lt;br /&gt;&lt;p&gt;&lt;br /&gt;These projects follow the work of &lt;a href="http://sepwww.stanford.edu/sep/jon/index.html"&gt;Jon Claerbout&lt;/a&gt; on &lt;a href="http://sepwww.stanford.edu/sep/jon/reproducible.html"&gt;Reproducible Research&lt;/a&gt;.&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Thoughts&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt; This work is all about designing a workflow for computational research, and creating tools to support that workflow.  Much of it seems quite banal, but part of the whole purpose of doing this is to free you from having to think about the boring and repetitious steps.&lt;br /&gt; &lt;li&gt; Levels of reproducibility&lt;br /&gt; &lt;ol&gt;&lt;br /&gt;    &lt;li&gt; Yourself, right away (when tweaking figures, for instance)&lt;/li&gt;&lt;br /&gt;    &lt;li&gt; Another research group member, or yourself 6 months later&lt;/li&gt;&lt;br /&gt;    &lt;li&gt; Someone in another group, (a) able to run the code and get the same results, and (b) able to understand the code&lt;/li&gt;&lt;br /&gt;    &lt;li&gt; Someone in another group, able to use your description to write their own code that gets the same results&lt;/li&gt;&lt;br /&gt; &lt;/ol&gt;&lt;br /&gt;  The last level is the gold standard in scientific reproducibility.   Experiments are reproduced from published descriptions (ideally, although the descriptions aren't always complete).  Or theorists rederive intermediate steps leading to a paper's conclusion.&lt;br&gt;&lt;br /&gt;  In software development, levels 1-3 are what counts.  (It's not very useful software development if others can't run your code and get expected results.). The last level is similar to multiple implementations of a standard (eg, C++ compilers from multiple vendors.)&lt;br /&gt; &lt;/li&gt;&lt;br /&gt; &lt;li&gt;The referenced works seem to focus mostly on processing of raw data (images, seismic imaging, etc) and the processing steps to produce a final result.&lt;br /&gt;&lt;p&gt;&lt;br /&gt;How would this apply in other fields? Say, ones with smaller input data sets, but much higher computational demands.&lt;br /&gt;&lt;p&gt;&lt;br /&gt;The Madagascar project, for example, uses SCons to coordinate the steps in producing research output.  What happens when one of the steps involves several weeks of supercomputer time?   Two immediate problems that spring to mind - one probably doesn't want this step launched without warning by the script.  Furthermore, the steps for launching such a job are likely to be very site-specific, making it difficult for others to reproduce elsewhere.&lt;br /&gt; &lt;/li&gt;&lt;br /&gt; &lt;li&gt; Somewhat related entries of mine: &lt;a href="http://quantum_mc.blogspot.com/2007/10/keeping-notes.htm"&gt;Keeping notes&lt;/a&gt; and &lt;a href="http://quantum_mc.blogspot.com/2005/04/solving-science-problems.html"&gt;Solving Science Problems&lt;/a&gt;&lt;br /&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5063286-2774220692253249455?l=quantum_mc.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://quantum_mc.blogspot.com/feeds/2774220692253249455/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5063286&amp;postID=2774220692253249455' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5063286/posts/default/2774220692253249455'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5063286/posts/default/2774220692253249455'/><link rel='alternate' type='text/html' href='http://quantum_mc.blogspot.com/2008/04/reproducible-research.html' title='Reproducible Research'/><author><name>Mark</name><uri>http://www.blogger.com/profile/03956296363343527391</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17905813891182211586'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5063286.post-2982315831203084213</id><published>2008-03-19T22:50:00.001-05:00</published><updated>2008-03-19T22:51:01.232-05:00</updated><title type='text'>Notes from PyCon 2008</title><content type='html'>I attended &lt;a href="http://us.pycon.org/2008/about/"&gt;PyCon 2008&lt;/a&gt; this past weekend, and had a good time meeting people in the Python commmunity.&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Some notes&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt; I tried to give a lightning (5 minute) talk about sympy and code generation. Unfortunately, Ubuntu 7.10 on my laptop (Dell Vostro) failed to display to the external output, so I was unable to present to the larger audience.  However, I was able to give the talk to the people at the science BOF session.  The slides are available &lt;a href="http://www.markdewing.com/code_gen/lightning-sympy-code-gen.pdf"&gt;here&lt;/a&gt;&lt;/li&gt; &lt;br /&gt;&lt;li&gt;At the science BOF session I met Michael Tobis, the author an interesting system called PyNSol.  It uses python to describe the differential equations, and generates Fortran for performance.&lt;/li&gt;&lt;br /&gt;&lt;li&gt; The python 2 to 3 converter looks interesting.  Not so much for the conversion of python versions, but for the infrastructure developed for the tool.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Enthought was showing off some multi-touch displays.  Being able to interact with 3D visualizations (and Google Earth) via gestures for zoom, pan, and rotation made for a nice demo.  The real question is if this type of display would be useful for actual use.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5063286-2982315831203084213?l=quantum_mc.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://quantum_mc.blogspot.com/feeds/2982315831203084213/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5063286&amp;postID=2982315831203084213' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5063286/posts/default/2982315831203084213'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5063286/posts/default/2982315831203084213'/><link rel='alternate' type='text/html' href='http://quantum_mc.blogspot.com/2008/03/notes-from-pycon-2008.html' title='Notes from PyCon 2008'/><author><name>Mark</name><uri>http://www.blogger.com/profile/03956296363343527391</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17905813891182211586'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5063286.post-8478824507204440724</id><published>2008-03-17T20:34:00.000-05:00</published><updated>2008-03-17T20:34:58.183-05:00</updated><title type='text'>Code generation now uses templates</title><content type='html'>In Quameon, the derivatives for the Gaussian basis functions are computed with &lt;a href="http://code.google.com/p/sympy/"&gt;sympy&lt;/a&gt; and the python code is generated.  Creating the code that surrounds the generated code is a bit of a tedious procedure - the syntax tree needs to be constructed by hand.  But no more!   The surrounding code can now written in python and a parser (written using &lt;a href="http://pyparsing.wikispaces.com/"&gt;pyparsing&lt;/a&gt;) will create the syntax tree for you.&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Some details:&lt;br/&gt;&lt;br /&gt;Identifiers surrounded by percent signs (eg %name%) get turned into a template node type for subsequent replacement.&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Example template:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;class %orb_name%:&lt;br /&gt;  def compute_value(self,alpha,v,r2):&lt;br /&gt;    x=v[0]&lt;br /&gt;    y=v[1]&lt;br /&gt;    z=v[2]&lt;br /&gt;    %value%&lt;br /&gt;    return val&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;The code replaces %orb_name% with the orbital name (s,px,py,px,etc) and %value% gets replaced with the expression for the value of the orbital (the methods for the derivatives not shown - see &lt;a href="https://quameon.svn.sourceforge.net/svnroot/quameon/trunk/codegen/primitive_gaussian/deriv.py"&gt;codegen/primitive_gaussian/deriv.py&lt;/a&gt; in SVN for the full template.)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5063286-8478824507204440724?l=quantum_mc.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://quantum_mc.blogspot.com/feeds/8478824507204440724/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5063286&amp;postID=8478824507204440724' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5063286/posts/default/8478824507204440724'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5063286/posts/default/8478824507204440724'/><link rel='alternate' type='text/html' href='http://quantum_mc.blogspot.com/2008/03/code-generation-now-uses-templates.html' title='Code generation now uses templates'/><author><name>Mark</name><uri>http://www.blogger.com/profile/03956296363343527391</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17905813891182211586'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5063286.post-5557967176633663015</id><published>2007-12-21T08:31:00.000-06:00</published><updated>2007-12-21T19:57:26.623-06:00</updated><title type='text'>Why python?</title><content type='html'>The author of the first comment on the &lt;a href="http://quantum_mc.blogspot.com/2007/12/quameon.html"&gt;Quameon&lt;/a&gt; entry wonders if Python will be too slow.&lt;br /&gt;&lt;p&gt;&lt;br /&gt;One reason to use Python is ease of programming.  Hopefully the advantages of programming in Python will outweigh the performance penalty.&lt;br /&gt;&lt;p&gt;&lt;br /&gt;However, at some point, runtime speed will be an issue.  Here's a list of steps to improve runtime performance (in increasing order of effort/expected return)&lt;br /&gt;&lt;ol&gt;&lt;br /&gt; &lt;li&gt; Use &lt;a href="http://psyco.sourceforge.net/"&gt;psyco&lt;/a&gt;.  Put "import psyco; pysco.full()" at  the beginning of your program and get an instant speed increase.&lt;br /&gt; &lt;li&gt; Use the &lt;a href="http://shed-skin.blogspot.com/"&gt;Shed-Skin&lt;/a&gt; Python to C++ compiler. (I haven't tried this yet - don't know if it works with Quameon.)&lt;br /&gt; &lt;li&gt; Profile and rewrite slow parts in C/C++/Fortran. I've done this with the inter-particle distance computation in a classical MC code in Python, and gained some performance.&lt;br /&gt; &lt;li&gt; Code generation.   Right now, the code for the Gaussian basis functions is auto-generated (no more computing derivatives by hand!!).  I would like to move more of the basic formulas to this technique.  Then it should be easier to retarget the code generation to another language (in theory, I haven't tried it yet).&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Other tidbits:&lt;br&gt;&lt;br /&gt;Monte Python uses Python and C++ for QMC (&lt;a href="http://arxiv.org/abs/physics/0609191"&gt;paper&lt;/a&gt;, &lt;a href="http://code.google.com/p/montepython/"&gt;code&lt;/a&gt;). They wrote the time-consuming parts in C++, and use Python to glue it all together.  The algorithm variants they tested (parallel distribution strategies for DMC) were achieved through changing the Python part of the code.&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Code generation could potentially result in *faster* code than writing a general framework in C++ or Fortran.  This is because the code can be specialized for a given physical system, exposing more  optimization opportunities.  For an example of code generation, look at the development SVN area of &lt;a href="http://pyquante.sourceforge.net/"&gt;PyQuante&lt;/a&gt; - there is a program that will produce a C++ program to compute the energy for a molecule given in the input file.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5063286-5557967176633663015?l=quantum_mc.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://quantum_mc.blogspot.com/feeds/5557967176633663015/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5063286&amp;postID=5557967176633663015' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5063286/posts/default/5557967176633663015'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5063286/posts/default/5557967176633663015'/><link rel='alternate' type='text/html' href='http://quantum_mc.blogspot.com/2007/12/why-python.html' title='Why python?'/><author><name>Mark</name><uri>http://www.blogger.com/profile/03956296363343527391</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17905813891182211586'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5063286.post-2352943008577412083</id><published>2007-12-05T23:32:00.001-06:00</published><updated>2007-12-06T00:00:46.440-06:00</updated><title type='text'>Quameon</title><content type='html'>I've been working on a Quantum Monte Carlo code implemented in Python.  It's called "Quameon" (the name is a mixture of letters from "Quantum Monte Carlo in Python"). There's a SourceForge project for it - here are links to the &lt;a href="http://sourceforge.net/projects/quameon"&gt; SourceForge project page&lt;/a&gt;, the &lt;a href="http://quameon.sourceforge.net/"&gt;project web page&lt;/a&gt;, and the &lt;a href="http://quameon.wiki.sourceforge.net/"&gt;project wiki&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The code doesn't do much currently, but I mention the project now so I can write blog entries about various aspects of getting the code working.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I'm currently trying to validate that the code works by using HF single particle orbitals (obtained from &lt;a href="http://pyquante.sourceforge.net/"&gt;PyQuante&lt;/a&gt;) and no jastrow factor - this should reproduce the HF energy.  It seems to work for a few atoms (He, Be, C), after sorting out some normalization issues with the basis sets (apparently all basis sets are not normalized - this doesn't affect the energy, but does affect the eigenvector coefficients).  I will need longer runs to be sure.  The next step is to profile the code to look for any quick and easy performance tuning opportunities.&lt;br /&gt;&lt;br /&gt;The first target (after getting the code running reliably) is to implement several forms for jastrow factors and several VMC parameter optimization algorithms.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5063286-2352943008577412083?l=quantum_mc.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://quantum_mc.blogspot.com/feeds/2352943008577412083/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5063286&amp;postID=2352943008577412083' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5063286/posts/default/2352943008577412083'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5063286/posts/default/2352943008577412083'/><link rel='alternate' type='text/html' href='http://quantum_mc.blogspot.com/2007/12/quameon.html' title='Quameon'/><author><name>Mark</name><uri>http://www.blogger.com/profile/03956296363343527391</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17905813891182211586'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5063286.post-9045888774469872430</id><published>2007-10-04T22:38:00.000-05:00</published><updated>2007-10-04T22:38:22.660-05:00</updated><title type='text'>Keeping notes</title><content type='html'>Keeping a record of work is important for research.  I use two main tools for this purpose.  First, a text file with entries in chronological order (one file per month, with names like "Sept2007").  I write the date and then start taking notes for that day in the file.&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Pro - easy to use, chronological view easily available&lt;br /&gt;&lt;li&gt;Con - math hard to write well, ideas spread over several days hard to view topically.&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;The other tool I use is a wiki. It's useful to keep data in a structured, hierarchical format that's easy to edit.&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Pro - ideas arranged topically, can do better looking math&lt;br /&gt;&lt;li&gt;Con - must work topically from the start, no good chronological view (Yes, I know you can view changes in order, but it's not as easy to reconstruct what I was thinking on a particular day.)&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;I want a single tool that does both of these - that can view the notes both chronologically and by topic.&lt;br /&gt;For work-flow, I want the ability to enter ideas and notes free-form, and perform categorization and annotation at a separate time.&lt;br /&gt;&lt;br /&gt;Another additional feature that would be nice is recording other actions on the system (at least by reference).&lt;br /&gt;One example is check-ins to source control.&lt;br /&gt;&lt;br /&gt;Another possible example - What if gnuplot were to record all the commands issued (and kept a copy of all the files used?)  Graphs could be re-created and played back at a later date easily.&lt;br /&gt;&lt;br /&gt;I looked around a little bit to see if there are other applications that might meet some of these requirements (or at least be an improvement over text files and a wiki).  One class of app is a note taking application.  I looked at Tomboy.  It does have a Latex plugin (though I could not get it to work).  Latex side-rant:  It's great for making nice looking mathematics, but you wind up with "equations under glass". It's pretty to look at, but you can't manipulate it further.  For mathematical content, I want something with more precise semantics (Content MathML, for example)&lt;br /&gt;&lt;br /&gt;Another class of tool is mind mapping software.  I looked at Vym (View your mind) briefly, but I don't think I will like this type of software.  Viewing a graph of links is nice, but not as the main working view - I prefer a wiki view (pages with links)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5063286-9045888774469872430?l=quantum_mc.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://quantum_mc.blogspot.com/feeds/9045888774469872430/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5063286&amp;postID=9045888774469872430' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5063286/posts/default/9045888774469872430'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5063286/posts/default/9045888774469872430'/><link rel='alternate' type='text/html' href='http://quantum_mc.blogspot.com/2007/10/keeping-notes.html' title='Keeping notes'/><author><name>Mark</name><uri>http://www.blogger.com/profile/03956296363343527391</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17905813891182211586'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5063286.post-4813553482472688657</id><published>2007-08-19T21:56:00.000-05:00</published><updated>2007-08-19T22:28:22.894-05:00</updated><title type='text'>Black Box Reweighting</title><content type='html'>In the &lt;a href="http://quantum_mc.blogspot.com/2007/08/reweighting-is-biased.html"&gt;last post&lt;/a&gt;, I wondered whether the black box reweighting method might help with the bias.&lt;br /&gt;&lt;p&gt;&lt;br /&gt;The &lt;a href="http://arxiv.org/abs/physics/0609194"&gt;Black Box Reweighting&lt;/a&gt; (BBRW) method computes weights using the observed distribution of samples, rather than the targeted distribution. (The &lt;a href="http://www.ccbb.pitt.edu/Professor_Websites/Zuckerman/index.html"&gt;author's website&lt;/a&gt; contains a link to supplementary material with further discussion.)&lt;br /&gt;&lt;p&gt;&lt;br /&gt;I ran a simple test, and the bias was slightly worse with the BBRW method, compared to standard reweighting.&lt;br /&gt;&lt;p&gt;&lt;br /&gt;The BBRW method does a fine job of solving the problem the authors intended (correct handling of a distribution that may be incompletely sampled, and lower variance of the result - the lower variance of the result was apparent in my tests), but it doesn't solve the reweighting bias issue.&lt;br /&gt;&lt;p&gt;&lt;br /&gt;The search for a method to correct reweighting bias continues...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5063286-4813553482472688657?l=quantum_mc.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://quantum_mc.blogspot.com/feeds/4813553482472688657/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5063286&amp;postID=4813553482472688657' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5063286/posts/default/4813553482472688657'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5063286/posts/default/4813553482472688657'/><link rel='alternate' type='text/html' href='http://quantum_mc.blogspot.com/2007/08/black-box-reweighting.html' title='Black Box Reweighting'/><author><name>Mark</name><uri>http://www.blogger.com/profile/03956296363343527391</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17905813891182211586'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5063286.post-499794093700811754</id><published>2007-08-14T22:52:00.000-05:00</published><updated>2007-08-14T22:47:30.901-05:00</updated><title type='text'>Reweighting is biased</title><content type='html'>The reweighting technique, where samples from one probability distribution are adjusted with a weight factor to compute averages from a different (but usually very similar) distribution, is biased for a finite number of samples.&lt;br /&gt;&lt;br /&gt;The details can be found &lt;a href="http://www.markdewing.com/qmc/reweighting/reweight_bias.pdf"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Question for the audience: Is this known? I don't recall seeing this mentioned any time the method has been presented.&lt;br /&gt;&lt;br /&gt;Some possible routes to fix the problem are listed in the paper, but alas, I haven't been able to turn any of them into a useful solution yet.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5063286-499794093700811754?l=quantum_mc.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://quantum_mc.blogspot.com/feeds/499794093700811754/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5063286&amp;postID=499794093700811754' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5063286/posts/default/499794093700811754'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5063286/posts/default/499794093700811754'/><link rel='alternate' type='text/html' href='http://quantum_mc.blogspot.com/2007/08/reweighting-is-biased.html' title='Reweighting is biased'/><author><name>Mark</name><uri>http://www.blogger.com/profile/03956296363343527391</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17905813891182211586'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5063286.post-2492205371699069097</id><published>2007-08-10T22:29:00.000-05:00</published><updated>2007-08-10T22:56:15.992-05:00</updated><title type='text'>VMC optimization papers</title><content type='html'>A recent &lt;a href="ttp://quantum_mc.blogspot.com/2007/03/useful-paper-for-vmc-optimization.html#5505554687116463571"&gt;comment&lt;/a&gt; suggested these papers on VMC optimization:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://arxiv.org/abs/cond-mat/0611094v2"&gt;Alleviation of the Fermion-sign problem by optimization of many-body wave functions&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.arxiv.org/abs/cond-mat/0502553v2"&gt;Wave function optimization in the variational Monte Carlo method&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;I'd also add these to the pile of papers to read and understand:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://arxiv.org/abs/physics/0701039v2"&gt;Optimization of quantum Monte Carlo wave functions by energy minimization&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.arxiv.org/abs/cond-mat/0511278v1"&gt;A simple and efficient approach to the optimization of correlated wave functions&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;And since this post is alread about VMC optimization, some further questions:&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt; What about simultaneous geometry and parameter optimization?&lt;/li&gt;&lt;br /&gt;&lt;li&gt; The focus seems to be on single geometries - what's likely more interesting in the future is a family of geometries - has anyone parameterized the VMC parameters (by the bond lengths or nuclear coordinates)?&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5063286-2492205371699069097?l=quantum_mc.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://quantum_mc.blogspot.com/feeds/2492205371699069097/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5063286&amp;postID=2492205371699069097' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5063286/posts/default/2492205371699069097'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5063286/posts/default/2492205371699069097'/><link rel='alternate' type='text/html' href='http://quantum_mc.blogspot.com/2007/08/vmc-optimization-papers.html' title='VMC optimization papers'/><author><name>Mark</name><uri>http://www.blogger.com/profile/03956296363343527391</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17905813891182211586'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5063286.post-8522992247457843063</id><published>2007-08-10T21:09:00.000-05:00</published><updated>2007-08-10T21:53:18.842-05:00</updated><title type='text'>Correct estimators in DMC without forward walking?</title><content type='html'>Computing properties other than the energy using Diffusion Monte Carlo requires forward walking to get correct answers.   That may change, if this paper - &lt;a href="http://arxiv.org/abs/0708.0542v1"&gt;Hellman-Feynman operator sampling in Diffusion Monte Carlo calculations&lt;/a&gt; - is correct.&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Although as I look at the paper more, the technique doesn't look any easier than the forward walking implementation by Casulleras and Boronat (the paper does mention this similarity).  It appears to use similar data in a different combination.  I would be interested to see how the noise, bias, and stability characteristics compare.&lt;br /&gt;&lt;p&gt;&lt;br /&gt;The Hellman-Feynman theorem seems to be getting lots of attention in the QMC world recently.   It's also been used to construct Zero-Variance Zero-Bias estimators (most recently example &lt;a href="http://arxiv.org/abs/0705.0721v2"&gt;here&lt;/a&gt;).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5063286-8522992247457843063?l=quantum_mc.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://quantum_mc.blogspot.com/feeds/8522992247457843063/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5063286&amp;postID=8522992247457843063' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5063286/posts/default/8522992247457843063'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5063286/posts/default/8522992247457843063'/><link rel='alternate' type='text/html' href='http://quantum_mc.blogspot.com/2007/08/correct-estimators-in-dmc-without.html' title='Correct estimators in DMC without forward walking?'/><author><name>Mark</name><uri>http://www.blogger.com/profile/03956296363343527391</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17905813891182211586'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5063286.post-5639242735566999595</id><published>2007-08-02T22:35:00.000-05:00</published><updated>2007-08-03T22:38:56.695-05:00</updated><title type='text'>Gravitational N-body and the Art of Computational Science</title><content type='html'>A rather ambitious project to describe a gravitional N-body code and how to write it in Ruby: &lt;a href="http://www.artcompsci.org/kali/development.html"&gt;The Art of Computational Science&lt;/a&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;As Greg Wilson  &lt;a href="http://pyre.third-bit.com/blog/archives/1058.html"&gt; points out&lt;/a&gt;, something like this would be nice to have in Python.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5063286-5639242735566999595?l=quantum_mc.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://quantum_mc.blogspot.com/feeds/5639242735566999595/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5063286&amp;postID=5639242735566999595' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5063286/posts/default/5639242735566999595'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5063286/posts/default/5639242735566999595'/><link rel='alternate' type='text/html' href='http://quantum_mc.blogspot.com/2007/08/gravitational-n-body-and-art-of.html' title='Gravitational N-body and the Art of Computational Science'/><author><name>Mark</name><uri>http://www.blogger.com/profile/03956296363343527391</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17905813891182211586'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5063286.post-2281758017913198005</id><published>2007-03-17T23:51:00.000-05:00</published><updated>2007-03-17T23:43:34.963-05:00</updated><title type='text'>Efficient Global Optimization</title><content type='html'>The optimization method mentioned &lt;a href="http://quantum_mc.blogspot.com/2007/03/useful-paper-for-vmc-optimization.html"&gt;last post&lt;/a&gt; is an improvement on Efficient Global Optimization, presented in the paper &lt;a href="http://www.springerlink.com/content/m5878111m101017p/"&gt;Efficient Global Optimization of ExpensiveBlack-Box Functions&lt;/a&gt; (also available from on one of the &lt;a href="http://www.schonlau.net/"&gt;author's websites&lt;/a&gt;)&lt;br /&gt;&lt;br&gt;&lt;br /&gt;Another paper listed in the references, &lt;a href="http://portal.acm.org/citation.cfm?coll=GUIDE&amp;dl=GUIDE&amp;id=596412"&gt;A Taxonomy of Global Optimization Methods Based on Response Surfaces&lt;/a&gt;(by D. R. Jones, one of the authors on the EGO paper) is a nice overview of various optimization methods.  It presents each method and gives ways in which it can be fooled into choosing the wrong point as the optimum.  A fix is given, which then leads to the next method in the list.&lt;br /&gt;&lt;br&gt;&lt;br /&gt;One of the core ideas is regression based on Gaussian processes (kriging).   To learn more about Gaussian processes, see &lt;a href="http://www.gaussianprocess.org/"&gt;www.gaussianprocess.org&lt;/a&gt;.  The two Jones papers listed above also show how the GP based methods fit in with other basis set methods.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5063286-2281758017913198005?l=quantum_mc.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://quantum_mc.blogspot.com/feeds/2281758017913198005/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5063286&amp;postID=2281758017913198005' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5063286/posts/default/2281758017913198005'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5063286/posts/default/2281758017913198005'/><link rel='alternate' type='text/html' href='http://quantum_mc.blogspot.com/2007/03/efficient-global-optimization.html' title='Efficient Global Optimization'/><author><name>Mark</name><uri>http://www.blogger.com/profile/03956296363343527391</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17905813891182211586'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5063286.post-4746803539365300569</id><published>2007-03-02T17:44:00.000-06:00</published><updated>2007-03-02T18:03:42.157-06:00</updated><title type='text'>Useful paper for VMC optimization?</title><content type='html'>I ran across this paper, &lt;a href="http://www.arxiv.org/abs/cs.NA/0611143"&gt;An informational approach to the global optimization of expensive-to-evaluate functions&lt;/a&gt;, and wondered if it might be useful for VMC optimization?&lt;br /&gt;&lt;p&gt;&lt;br /&gt;The type of problem being solved seems to fit:&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt; Function is expensive to evaluate.&lt;br /&gt;&lt;li&gt; Function evaluation may be noisy.&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Many optimization methods estimate an optimal point and evaluate the function at that point.  The method described in the paper estimates the uncertainty in the knowledge of the function, and evaluates the function where it will best improve our knowledge of the function.&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Some potential issues:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;This method doesn't make use of gradient information, which may make it less competitive than methods that do use gradient information.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;How well does it scale with the number of parameters?  The authors present a method to keep the cost under control as the dimension increases, but is the method still effective then?&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5063286-4746803539365300569?l=quantum_mc.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://quantum_mc.blogspot.com/feeds/4746803539365300569/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5063286&amp;postID=4746803539365300569' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5063286/posts/default/4746803539365300569'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5063286/posts/default/4746803539365300569'/><link rel='alternate' type='text/html' href='http://quantum_mc.blogspot.com/2007/03/useful-paper-for-vmc-optimization.html' title='Useful paper for VMC optimization?'/><author><name>Mark</name><uri>http://www.blogger.com/profile/03956296363343527391</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17905813891182211586'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5063286.post-322296660878182812</id><published>2007-02-23T08:21:00.000-06:00</published><updated>2007-02-23T16:00:01.659-06:00</updated><title type='text'>March meeting</title><content type='html'>This year's &lt;a href="http://www.aps.org/meetings/march/index.cfm"&gt;APS March meeting&lt;/a&gt; has a couple of sessions on QMC: &lt;a href="http://meetings.aps.org/Meeting/MAR07/sessionindex2/?SessionEventID=64115"&gt;H4: Recent Advances in quantum Monte Carlo Simulations&lt;/a&gt; and &lt;a href="http://meetings.aps.org/Meeting/MAR07/sessionindex2/?SessionEventID=64421"&gt;V21: General Theory: Computational Quantum Monte Carlo Methods&lt;/a&gt;.&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Another session of interest (for me, anyway) is &lt;a href="http://meetings.aps.org/Meeting/MAR07/sessionindex2/?SessionEventID=56635"&gt;A23: Focus Session: High Pressure I - Earth and Planetary Materials&lt;/a&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;I will not be attending the March meeting this year, as my wife and I are expecting our first child in mid-March.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5063286-322296660878182812?l=quantum_mc.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://quantum_mc.blogspot.com/feeds/322296660878182812/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5063286&amp;postID=322296660878182812' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5063286/posts/default/322296660878182812'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5063286/posts/default/322296660878182812'/><link rel='alternate' type='text/html' href='http://quantum_mc.blogspot.com/2007/02/march-meeting.html' title='March meeting'/><author><name>Mark</name><uri>http://www.blogger.com/profile/03956296363343527391</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17905813891182211586'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5063286.post-7647327581907030715</id><published>2007-01-18T08:24:00.000-06:00</published><updated>2007-01-18T08:39:31.560-06:00</updated><title type='text'>Science Blogging Conference</title><content type='html'>The &lt;a href="http://wiki.blogtogether.org/blogtogether/"&gt;North Caroline Science Blogging Conference&lt;/a&gt; starts this weekend.  It looks like it covers some introductory how-to material, and then dives into issues such as promoting public understanding of science, teaching, and how does blogging interact with research.&lt;br /&gt;&lt;p&gt;&lt;br /&gt;If you're put off by the term 'blog' being overused and overhyped, think of the conference as discussing the potential and challenges of a (relatively) new one-to-many and many-to-many communication mechanism and how that could affect the interactions between scientists and the public, and the interactions between scientists.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5063286-7647327581907030715?l=quantum_mc.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://quantum_mc.blogspot.com/feeds/7647327581907030715/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5063286&amp;postID=7647327581907030715' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5063286/posts/default/7647327581907030715'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5063286/posts/default/7647327581907030715'/><link rel='alternate' type='text/html' href='http://quantum_mc.blogspot.com/2007/01/science-blogging-conference.html' title='Science Blogging Conference'/><author><name>Mark</name><uri>http://www.blogger.com/profile/03956296363343527391</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17905813891182211586'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5063286.post-6322654325421956248</id><published>2007-01-17T21:52:00.000-06:00</published><updated>2007-01-17T21:58:45.294-06:00</updated><title type='text'>Basis sets galore</title><content type='html'>More basis sets that you can shake a stick at over at the &lt;a href="http://gnode2.pnl.gov/bse/portal"&gt;EMSL Basis Set Exchange&lt;/a&gt;.  (Not sure why you would want to shake a stick at basis sets, though.)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5063286-6322654325421956248?l=quantum_mc.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://quantum_mc.blogspot.com/feeds/6322654325421956248/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5063286&amp;postID=6322654325421956248' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5063286/posts/default/6322654325421956248'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5063286/posts/default/6322654325421956248'/><link rel='alternate' type='text/html' href='http://quantum_mc.blogspot.com/2007/01/basis-sets-galore.html' title='Basis sets galore'/><author><name>Mark</name><uri>http://www.blogger.com/profile/03956296363343527391</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17905813891182211586'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5063286.post-116186813123176579</id><published>2006-10-26T08:08:00.000-05:00</published><updated>2006-10-26T08:08:51.266-05:00</updated><title type='text'>Schrodinger equation in the mass media</title><content type='html'>The Schrodinger equation appears in the background in the second half of &lt;a href="http://weirdal.com"&gt;Weird Al's&lt;/a&gt; video &lt;a href="http://www.youtube.com/watch?v=-xEzGIuY7kw"&gt;White &amp; Nerdy&lt;/a&gt;.&lt;br /&gt;&lt;p&gt;&lt;br /&gt;The video also shows rolling dice (briefly), if one wishes to stretch its relevance to include Monte Carlo as well.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5063286-116186813123176579?l=quantum_mc.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://quantum_mc.blogspot.com/feeds/116186813123176579/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5063286&amp;postID=116186813123176579' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5063286/posts/default/116186813123176579'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5063286/posts/default/116186813123176579'/><link rel='alternate' type='text/html' href='http://quantum_mc.blogspot.com/2006/10/schrodinger-equation-in-mass-media.html' title='Schrodinger equation in the mass media'/><author><name>Mark</name><uri>http://www.blogger.com/profile/03956296363343527391</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17905813891182211586'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5063286.post-109919632190099282</id><published>2006-10-20T21:12:00.000-05:00</published><updated>2006-10-20T21:21:50.960-05:00</updated><title type='text'>The Other QMC</title><content type='html'>Quasi-Monte Carlo is the other method commonly referred to by the QMC acronym (I will abbreviate it QuasiMC to minimize confusion).  It's not really Monte Carlo since the sequence of points is not random, but the point sets do have a Monte Carlo-ish feel about them.&lt;br /&gt;&lt;br /&gt;  And in fact, it does share the property of arbitrary termination with Monte Carlo integration (consider a grid - you have have use all the points at a particular spacing.  Stopping half way across the region of integration is not going to yield good results).&lt;br /&gt;&lt;br /&gt;  The reason people are interested in QuasiMC is that its convergence is better than the 1/sqrt(N) of Monte Carlo.   It does this by using point sets that are more evenly distributed than random points - there are fewer clumps of points or large gaps that appear in random sequences (Search for 'Low-discrepancy sequences'.  Here's the Wikipedia  entries for a &lt;a href="http://en.wikipedia.org/wiki/Low-discrepancy_sequence"&gt;technical discussion&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/Constructions_of_low-discrepancy_sequences"&gt;some sequences&lt;/a&gt;).&lt;br /&gt;   &lt;br /&gt;QuasiMC point sets are usually generated from sequences where the low-discrepancy condition can be verified theoretically, but it is possible to use the intuitive approach of making the points maximally spread out (see this &lt;a href="http://public.lanl.gov/kmh/talks/cdrh05vgr.abs.html"&gt;presentation&lt;/a&gt; for an example).&lt;br /&gt;&lt;br /&gt;The following algorithm will generate a set of N points that gives better convergence than random (at least it worked on a simple integrand in one dimension.)&lt;br /&gt;&lt;ol&gt;&lt;br /&gt; &lt;li&gt; compute some random points (&gt;&gt; N points) &lt;/li&gt;&lt;br /&gt; &lt;li&gt; pick a starting point and put it in the set S. &lt;/li&gt;&lt;br /&gt; &lt;li&gt; find the point that is the furthest from all existing points in S, and place that point in S. &lt;/li&gt;&lt;br /&gt; &lt;li&gt;  repeat the step 3 until N points are selected. &lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;(I'm not saying this an efficient way to generate the points, just that it can be done.)&lt;br /&gt;&lt;br /&gt;For addition information, see also &lt;a href="http://www.nrbook.com/a/bookfpdf/f7-7.pdf"&gt;chapter 7.7&lt;/a&gt; in &lt;a href="http://www.nrbook.com/a/bookfpdf.html"&gt;Numerical Recipes&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5063286-109919632190099282?l=quantum_mc.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://quantum_mc.blogspot.com/feeds/109919632190099282/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5063286&amp;postID=109919632190099282' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5063286/posts/default/109919632190099282'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5063286/posts/default/109919632190099282'/><link rel='alternate' type='text/html' href='http://quantum_mc.blogspot.com/2006/10/other-qmc.html' title='The Other QMC'/><author><name>Mark</name><uri>http://www.blogger.com/profile/03956296363343527391</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17905813891182211586'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5063286.post-115716055298840795</id><published>2006-09-01T20:21:00.000-05:00</published><updated>2006-09-01T20:29:13.000-05:00</updated><title type='text'>QMC wiki</title><content type='html'>Check out the QMC wiki at &lt;a href="http://www.qmcwiki.org"&gt;http://www.qmcwiki.org&lt;/a&gt;  &lt;br /&gt;&lt;br /&gt;It looks like a promising resource for the QMC research community.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5063286-115716055298840795?l=quantum_mc.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://quantum_mc.blogspot.com/feeds/115716055298840795/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5063286&amp;postID=115716055298840795' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5063286/posts/default/115716055298840795'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5063286/posts/default/115716055298840795'/><link rel='alternate' type='text/html' href='http://quantum_mc.blogspot.com/2006/09/qmc-wiki.html' title='QMC wiki'/><author><name>Mark</name><uri>http://www.blogger.com/profile/03956296363343527391</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17905813891182211586'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5063286.post-115139072771574681</id><published>2006-06-27T01:15:00.000-05:00</published><updated>2006-06-27T01:45:30.203-05:00</updated><title type='text'>Optimal histogram bin width</title><content type='html'>Kevin Knuth wrote a paper about finding the optimal number of bins to represent data in a histogram (&lt;a href="http://www.arxiv.org/abs/physics/0605197"&gt;Optimal Data-Based Binning for Histograms&lt;/a&gt;).  He starts from a piecewise constant density model and finds the (Bayesian) posterior probability from this model (equation 36, which is actually the log of the posterior).  The posterior function is then maximized to find the number of bins that best models the data.&lt;br /&gt;&lt;p&gt;&lt;br /&gt;The article also investigates the number of data points for a reliable estimation of the density.  The recommendation is 100-150 points, if the distribution is Gaussian.&lt;br /&gt;&lt;p&gt;&lt;br /&gt;It would be interesting to apply this method to radial distribution functions.  However the assumption of a constant volume for each bin is not met in this case.  There are several ways this could be adjusted, but I'm not sure they are valid (scale each bin count by the volume, or use non-uniform bin spacing to maintain constant volume)  &lt;br /&gt;&lt;p&gt;&lt;br /&gt;Alternately, the discussion references other algorithms for dealing with variable bin-width models (which may be better for resolving multiple peaks anyway).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5063286-115139072771574681?l=quantum_mc.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://quantum_mc.blogspot.com/feeds/115139072771574681/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5063286&amp;postID=115139072771574681' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5063286/posts/default/115139072771574681'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5063286/posts/default/115139072771574681'/><link rel='alternate' type='text/html' href='http://quantum_mc.blogspot.com/2006/06/optimal-histogram-bin-width.html' title='Optimal histogram bin width'/><author><name>Mark</name><uri>http://www.blogger.com/profile/03956296363343527391</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17905813891182211586'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry></feed>